/*
* INSANE - Interactive Structural Analysis Environment
*
* Copyright (C) 2003-2005
* Universidade Federal de Minas Gerais
* Escola de Engenharia
* Departamento de Engenharia de Estruturas
* 
* Author's email :    insane@dees.ufmg.br
* Author's website :  http://www.dees.ufmg.br/insane
* 
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or any later version.
* 
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
* 
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
*/
package br.ufmg.dees.insane.drivers;

import br.ufmg.dees.insane.util.IVector;


/**
*A class representing an 
*
*@author Fuina, Jamile & Pitangueira, Roque
*@version 1.0
*@since March 2005
*/

public class Convergence {
	
	private double tolerance;
	private boolean conv;
	
	public Convergence(double tolerance) {
		this.tolerance = tolerance;
	}
	
    public boolean getConvergence(){
    	
    	return conv;
    }
    
    public void setConvergence(double tol){
    	
    	tolerance = tol;
    	
    }
    
    public boolean checkConvergence(IVector v1, IVector v2){
    	double aux1 = v1.dot(v1);		// Pegar o metodo que faz o produto escalar entre dois vetores
    	double aux2 = v2.dot(v2);
    	
    	aux1 = Math.sqrt(aux1);
    	aux2 = Math.sqrt(aux2);
    	if( aux1 < (aux2 * tolerance)) return true;
    	else return false;    	
    }
}
